home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / rpcdcep.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  9.5 KB  |  419 lines

  1. /*++
  2.  
  3. Copyright (c) 1991-1996 Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     rpcdcep.h
  8.  
  9. Abstract:
  10.  
  11.     This module contains the private RPC runtime APIs for use by the
  12.     stubs and by support libraries.  Applications must not call these
  13.     routines.
  14.  
  15. --*/
  16.  
  17. #ifndef __RPCDCEP_H__
  18. #define __RPCDCEP_H__
  19. #pragma option push -b
  20.  
  21.  
  22. // Set the packing level for RPC structures for Dos and Windows.
  23.  
  24. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  25. #pragma pack(2)
  26. #endif
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31.  
  32. typedef struct _RPC_VERSION {
  33.     unsigned short MajorVersion;
  34.     unsigned short MinorVersion;
  35. } RPC_VERSION;
  36.  
  37. typedef struct _RPC_SYNTAX_IDENTIFIER {
  38.     GUID SyntaxGUID;
  39.     RPC_VERSION SyntaxVersion;
  40. } RPC_SYNTAX_IDENTIFIER, __RPC_FAR * PRPC_SYNTAX_IDENTIFIER;
  41.  
  42. typedef struct _RPC_MESSAGE
  43. {
  44.     RPC_BINDING_HANDLE Handle;
  45.     unsigned long DataRepresentation;
  46.     void __RPC_FAR * Buffer;
  47.     unsigned int BufferLength;
  48.     unsigned int ProcNum;
  49.     PRPC_SYNTAX_IDENTIFIER TransferSyntax;
  50.     void __RPC_FAR * RpcInterfaceInformation;
  51.     void __RPC_FAR * ReservedForRuntime;
  52.     RPC_MGR_EPV __RPC_FAR * ManagerEpv;
  53.     void __RPC_FAR * ImportContext;
  54.     unsigned long RpcFlags;
  55. } RPC_MESSAGE, __RPC_FAR * PRPC_MESSAGE;
  56.  
  57.  
  58. typedef RPC_STATUS RPC_ENTRY RPC_FORWARD_FUNCTION(
  59.                        IN UUID             __RPC_FAR * InterfaceId,
  60.                        IN RPC_VERSION      __RPC_FAR * InterfaceVersion,
  61.                        IN UUID             __RPC_FAR * ObjectId,
  62.                        IN unsigned char         __RPC_FAR * Rpcpro,
  63.                        IN void __RPC_FAR * __RPC_FAR * ppDestEndpoint);
  64.  
  65. /*
  66.  * Types of function calls for datagram rpc
  67.  */
  68.  
  69. #define RPC_NCA_FLAGS_DEFAULT       0x00000000  /* 0b000...000 */
  70. #define RPC_NCA_FLAGS_IDEMPOTENT    0x00000001  /* 0b000...001 */
  71. #define RPC_NCA_FLAGS_BROADCAST     0x00000002  /* 0b000...010 */
  72. #define RPC_NCA_FLAGS_MAYBE         0x00000004  /* 0b000...100 */
  73.  
  74. #define RPC_BUFFER_COMPLETE          0x00001000 /* used by pipes */
  75. #define RPC_BUFFER_PARTIAL              0x00002000 /* used by pipes */
  76. #define RPC_BUFFER_EXTRA                 0x00004000 /* used by pipes */
  77.  
  78. #define RPCFLG_NON_NDR                    0x80000000UL
  79. #define RPCFLG_ASYNCHRONOUS         0x40000000UL
  80. #define RPCFLG_INPUT_SYNCHRONOUS    0x20000000UL
  81. #define RPCFLG_LOCAL_CALL                0x10000000UL
  82.  
  83. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  84. #define RPC_FLAGS_VALID_BIT 0x8000
  85. #endif
  86.  
  87. #if defined(__RPC_WIN32__) || defined(__RPC_MAC__)
  88. #define RPC_FLAGS_VALID_BIT 0x00008000
  89. #endif
  90.  
  91. typedef
  92. void
  93. (__RPC_STUB __RPC_FAR * RPC_DISPATCH_FUNCTION) (
  94.     IN OUT PRPC_MESSAGE Message
  95.     );
  96.  
  97. typedef struct {
  98.     unsigned int DispatchTableCount;
  99.     RPC_DISPATCH_FUNCTION __RPC_FAR * DispatchTable;
  100.     int Reserved;
  101. } RPC_DISPATCH_TABLE, __RPC_FAR * PRPC_DISPATCH_TABLE;
  102.  
  103. typedef struct _RPC_PROTSEQ_ENDPOINT
  104. {
  105.     unsigned char __RPC_FAR * RpcProtocolSequence;
  106.     unsigned char __RPC_FAR * Endpoint;
  107. } RPC_PROTSEQ_ENDPOINT, __RPC_FAR * PRPC_PROTSEQ_ENDPOINT;
  108.  
  109. /*
  110. Both of these types MUST start with the InterfaceId and TransferSyntax.
  111. Look at RpcIfInqId and I_RpcIfInqTransferSyntaxes to see why.
  112. */
  113. #define NT351_INTERFACE_SIZE 0x40
  114. #define RPC_INTERFACE_HAS_PIPES           0x0001
  115.  
  116. typedef struct _RPC_SERVER_INTERFACE
  117. {
  118.     unsigned int Length;
  119.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  120.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  121.     PRPC_DISPATCH_TABLE DispatchTable;
  122.     unsigned int RpcProtseqEndpointCount;
  123.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  124.     RPC_MGR_EPV __RPC_FAR *DefaultManagerEpv;
  125.     void const __RPC_FAR *InterpreterInfo;
  126.     unsigned int Flags ;
  127. } RPC_SERVER_INTERFACE, __RPC_FAR * PRPC_SERVER_INTERFACE;
  128.  
  129. typedef struct _RPC_CLIENT_INTERFACE
  130. {
  131.     unsigned int Length;
  132.     RPC_SYNTAX_IDENTIFIER InterfaceId;
  133.     RPC_SYNTAX_IDENTIFIER TransferSyntax;
  134.     PRPC_DISPATCH_TABLE DispatchTable;
  135.     unsigned int RpcProtseqEndpointCount;
  136.     PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint;
  137.     unsigned long Reserved;
  138.     void const __RPC_FAR * InterpreterInfo;
  139.     unsigned int Flags ;
  140. } RPC_CLIENT_INTERFACE, __RPC_FAR * PRPC_CLIENT_INTERFACE;
  141.  
  142. RPC_STATUS RPC_ENTRY
  143. I_RpcGetBuffer (
  144.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  145.     );
  146.  
  147. RPC_STATUS RPC_ENTRY
  148. I_RpcSendReceive (
  149.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  150.     );
  151.  
  152. RPC_STATUS RPC_ENTRY
  153. I_RpcFreeBuffer (
  154.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  155.     );
  156.  
  157. RPC_STATUS RPC_ENTRY
  158. I_RpcSend (
  159.     IN OUT PRPC_MESSAGE Message
  160.     ) ;
  161.  
  162. RPC_STATUS RPC_ENTRY
  163. I_RpcReceive (
  164.     IN OUT PRPC_MESSAGE Message,
  165.     IN unsigned int Size
  166.     ) ;
  167.  
  168. RPC_STATUS RPC_ENTRY
  169. I_RpcFreePipeBuffer (
  170.     IN OUT RPC_MESSAGE __RPC_FAR * Message
  171.     ) ;
  172.  
  173. RPC_STATUS RPC_ENTRY
  174. I_RpcReallocPipeBuffer (
  175.     IN PRPC_MESSAGE Message,
  176.     IN unsigned int NewSize
  177.     ) ;
  178.  
  179. typedef void * I_RPC_MUTEX;
  180.  
  181. void RPC_ENTRY
  182. I_RpcRequestMutex (
  183.     IN OUT I_RPC_MUTEX * Mutex
  184.     );
  185.  
  186. void RPC_ENTRY
  187. I_RpcClearMutex (
  188.     IN I_RPC_MUTEX Mutex
  189.     );
  190.  
  191. void RPC_ENTRY
  192. I_RpcDeleteMutex (
  193.     IN I_RPC_MUTEX Mutex
  194.     );
  195.  
  196. void __RPC_FAR * RPC_ENTRY
  197. I_RpcAllocate (
  198.     IN unsigned int Size
  199.     );
  200.  
  201. void RPC_ENTRY
  202. I_RpcFree (
  203.     IN void __RPC_FAR * Object
  204.     );
  205.  
  206. void RPC_ENTRY
  207. I_RpcPauseExecution (
  208.     IN unsigned long Milliseconds
  209.     );
  210.  
  211. typedef
  212. void
  213. (__RPC_USER __RPC_FAR * PRPC_RUNDOWN) (
  214.     void __RPC_FAR * AssociationContext
  215.     );
  216.  
  217. RPC_STATUS RPC_ENTRY
  218. I_RpcMonitorAssociation (
  219.     IN RPC_BINDING_HANDLE Handle,
  220.     IN PRPC_RUNDOWN RundownRoutine,
  221.     IN void * Context
  222.     );
  223.  
  224. RPC_STATUS RPC_ENTRY
  225. I_RpcStopMonitorAssociation (
  226.     IN RPC_BINDING_HANDLE Handle
  227.     );
  228.  
  229. RPC_BINDING_HANDLE RPC_ENTRY
  230. I_RpcGetCurrentCallHandle(
  231.     void
  232.     );
  233.  
  234. RPC_STATUS RPC_ENTRY
  235. I_RpcGetAssociationContext (
  236.     OUT void __RPC_FAR * __RPC_FAR * AssociationContext
  237.     );
  238.  
  239. RPC_STATUS RPC_ENTRY
  240. I_RpcSetAssociationContext (
  241.     IN void __RPC_FAR * AssociationContext
  242.     );
  243.  
  244. #ifdef __RPC_NT__
  245.  
  246. RPC_STATUS RPC_ENTRY
  247. I_RpcNsBindingSetEntryName (
  248.     IN RPC_BINDING_HANDLE Binding,
  249.     IN unsigned long EntryNameSyntax,
  250.     IN unsigned short __RPC_FAR * EntryName
  251.     );
  252.  
  253. #else
  254.  
  255. RPC_STATUS RPC_ENTRY
  256. I_RpcNsBindingSetEntryName (
  257.     IN RPC_BINDING_HANDLE Binding,
  258.     IN unsigned long EntryNameSyntax,
  259.     IN unsigned char __RPC_FAR * EntryName
  260.     );
  261.  
  262. #endif
  263.  
  264. #ifdef __RPC_NT__
  265.  
  266. RPC_STATUS RPC_ENTRY
  267. I_RpcBindingInqDynamicEndpoint (
  268.     IN RPC_BINDING_HANDLE Binding,
  269.     OUT unsigned short __RPC_FAR * __RPC_FAR * DynamicEndpoint
  270.     );
  271.  
  272. #else
  273.  
  274. RPC_STATUS RPC_ENTRY
  275. I_RpcBindingInqDynamicEndpoint (
  276.     IN RPC_BINDING_HANDLE Binding,
  277.     OUT unsigned char __RPC_FAR * __RPC_FAR * DynamicEndpoint
  278.     );
  279.  
  280. #endif
  281.  
  282. #define TRANSPORT_TYPE_CN        0x1
  283. #define TRANSPORT_TYPE_DG        0x2
  284. #define TRANSPORT_TYPE_LPC       0x4
  285. #define TRANSPORT_TYPE_WMSG   0x8
  286.  
  287. RPC_STATUS RPC_ENTRY
  288. I_RpcBindingInqTransportType (
  289.     IN RPC_BINDING_HANDLE Binding,
  290.     OUT unsigned int __RPC_FAR * Type
  291.     );
  292.  
  293. typedef struct _RPC_TRANSFER_SYNTAX
  294. {
  295.     UUID Uuid;
  296.     unsigned short VersMajor;
  297.     unsigned short VersMinor;
  298. } RPC_TRANSFER_SYNTAX;
  299.  
  300. RPC_STATUS RPC_ENTRY
  301. I_RpcIfInqTransferSyntaxes (
  302.     IN RPC_IF_HANDLE RpcIfHandle,
  303.     OUT RPC_TRANSFER_SYNTAX __RPC_FAR * TransferSyntaxes,
  304.     IN unsigned int TransferSyntaxSize,
  305.     OUT unsigned int __RPC_FAR * TransferSyntaxCount
  306.     );
  307.  
  308. RPC_STATUS RPC_ENTRY
  309. I_UuidCreate (
  310.     OUT UUID __RPC_FAR * Uuid
  311.     );
  312.  
  313. RPC_STATUS RPC_ENTRY
  314. I_RpcBindingCopy (
  315.     IN RPC_BINDING_HANDLE SourceBinding,
  316.     OUT RPC_BINDING_HANDLE __RPC_FAR * DestinationBinding
  317.     );
  318.  
  319. RPC_STATUS RPC_ENTRY
  320. I_RpcBindingIsClientLocal (
  321.     IN RPC_BINDING_HANDLE BindingHandle OPTIONAL,
  322.     OUT unsigned int __RPC_FAR * ClientLocalFlag
  323.     );
  324.  
  325. void RPC_ENTRY
  326. I_RpcSsDontSerializeContext (
  327.     void
  328.     );
  329.  
  330. RPC_STATUS RPC_ENTRY
  331. I_RpcLaunchDatagramReceiveThread(
  332.     void __RPC_FAR * pAddress
  333.     );
  334.  
  335. RPC_STATUS RPC_ENTRY
  336. I_RpcServerRegisterForwardFunction (
  337.     IN RPC_FORWARD_FUNCTION __RPC_FAR * pForwardFunction
  338.     );
  339.  
  340.  
  341. RPC_STATUS RPC_ENTRY
  342. I_RpcConnectionInqSockBuffSize(
  343.   OUT unsigned long __RPC_FAR * RecvBuffSize,
  344.   OUT unsigned long __RPC_FAR * SendBuffSize
  345.   );
  346.  
  347. RPC_STATUS RPC_ENTRY
  348. I_RpcConnectionSetSockBuffSize(
  349.    IN unsigned long RecvBuffSize,
  350.    IN unsigned long SendBuffSize
  351.    );
  352.  
  353.  
  354. #ifdef MSWMSG
  355. RPC_STATUS RPC_ENTRY
  356. I_RpcServerStartListening(
  357.     HWND hWnd
  358.     ) ;
  359.  
  360. RPC_STATUS RPC_ENTRY
  361. I_RpcServerStopListening(
  362.     ) ;
  363.  
  364. RPC_STATUS RPC_ENTRY
  365. I_RpcGetThreadWindowHandle(
  366.     OUT HWND *WindowHandle
  367.     ) ;
  368.  
  369. typedef RPC_STATUS (*RPC_BLOCKING_FN) (
  370.     IN void *wnd,
  371.     IN void *Context,
  372.     IN HANDLE hSyncEvent
  373.     ) ;
  374.  
  375. RPC_STATUS RPC_ENTRY
  376. I_RpcAsyncSendReceive(
  377.     IN OUT PRPC_MESSAGE pRpcMessage,
  378.     IN OPTIONAL void *Context,
  379.     HWND hWnd
  380.     ) ;
  381.  
  382. RPC_STATUS RPC_ENTRY
  383. I_RpcBindingSetAsync(
  384.     IN RPC_BINDING_HANDLE Binding,
  385.     IN RPC_BLOCKING_FN BlockingFn
  386.     ) ;
  387.  
  388. LONG RPC_ENTRY
  389. I_RpcWindowProc(
  390.     IN HWND hWnd,
  391.     IN UINT Message,
  392.     IN WPARAM wParam,
  393.     IN LPARAM lParam
  394.     ) ;
  395.  
  396. RPC_STATUS RPC_ENTRY
  397. I_RpcSetWMsgEndpoint (
  398.     IN WCHAR __RPC_FAR * Endpoint
  399.     ) ;
  400. #endif
  401.  
  402. RPC_STATUS RPC_ENTRY
  403. I_RpcServerInqTransportType(
  404.     OUT unsigned int __RPC_FAR * Type
  405.     ) ;
  406.  
  407. #ifdef __cplusplus
  408. }
  409. #endif
  410.  
  411. // Reset the packing level for Dos and Windows.
  412.  
  413. #if defined(__RPC_DOS__) || defined(__RPC_WIN16__)
  414. #pragma pack()
  415. #endif
  416.  
  417. #pragma option pop
  418. #endif /* __RPCDCEP_H__ */
  419.